تابلو روان و آموزش تابلو روان و ساعت مسجد

تابلو روان و آموزش تابلو روان و ساعت مسجد

 

تابلو روان و آموزش تابلو روان و ساعت مسجد

برگرفته از سايت www.tabloravan.net
09137544711

اين تابلو ها از بلوکهاي :

- ماتريس LED

- درايورهاي سطر و ستون

- پردازنده

- تجهيزات ورود اطلاعات

- حافظه

تشکيل شده‌اند.

در واقع يک تابلو ي نمايشگر ديجيتالي، متن مورد نظر خود را از طريق تجهيزات ورودي همچون کيبورد و يا پورت سريال دريافت ميکند. و اين اطلاعات را در اختيار پردازنده قرار ميدهد. سپس پردازنده پس از آناليز اطلاعات آن را در حافظه تابلو ذخيره نموده. علاوه بر آن حافظه موجود در تابلو ميتواند کدهاي برنامه را در خود نگهداري نمايد. از طرفي پردازنده با توجه به اطلاعات ذخيره شده، سيگنالهاي لازم را جهت نمايش توليد کرده و در اختيار درايورها قرار ميدهد. با توجه به اينکه نحوه چيدمان LED ها در نمايشگر بنا به دلايلي که بعدا توضيح داده خواهد شد به صورت ماتريسي مي باشد، لذا دو دسته درايور براي راه اندازي ماتريس نياز است که شامل داريورهاي سطر و داريورهاي ستون ميياشند. اين درايورها با توجه به فرامين دريافتي از سوي پردازنده، با روشن و خاموش نگاه داشتن LED هاي موجود در ماتريس، باعث به نمايش در آمدن مطالب (اعم از متن و يا تصوير) بر روي ماتريس خواهند شد.

به اين تصوير نگاه کنيد، تصوير صورتک خندان !

در نگاه اول تصوير فوق به صورت يک تصوير کامل و يکپارچه به نظر مي‌رسد. اما اگر کمي با دقت بيشتر به آن دقت کنيد و تا حد امکان آنرا بزرگ نماييد متوجه خواهيد شد که در واقع آن تصوير از نقاط ( pixel ) متعددي تشکيل شده. پس تصوير فوق را ميتوان مجموعه نقاطي دانست که داراي رنگهاي متفاوتي‌اند. هر يک از اين نقاط را يک جزء تصوير (Picture Element) و اين خاصيت را خاصيت موزائيکي تصوير مي‌نامند. من جهت کمک به درک مطلب تصوير فوق را با بزرگ نمايي بيشتر در زير قرار داده‌ام. به آن دقت کنيد.



هرچه تعداد اجزاء تصوير در واحد سطح بيشتر باشد، وضوح تصوير بيشتر مي‌باشد. به عبارت ديگر تصوير به واقعيت نزديکتر بوده، جزئيات آن بهتر ديده ميشود. در تابلو ‌هاي ديجيتالي نيز خاصيت موزائيکي وجود دارد. تصوير تابلو توسط ماتريسي از LED ها ايجاد ميگردد. در اينجا ابعاد يک جزء تصوير به اندازه قطر يک LED است. که از يک فاصله معين چشم بيننده قادر به تمايز نقاط تصوير ايجاد شده نبوده و يک تصوير را يکپارچه احساس ميکند.

جهت تشکيل تصوير بر روي پانل تابلو ، نياز به روشن و خاموش نگه داشتن LED هاي موجود بر روي تابلو متناسب با تصوير مورد نظر است. بنابراين نياز به کنترل تک تک LED هاي موجود در تابلو ميباشد. از طرفي هر LED داراي دو پايه است ( با فرض تک رنگ بودن ) و در صورتي که ما يک پانل LED با ماتريس 10x10 داشته باشيم، دويست پايه و يا دويست سيم جهت کنترل داريم. مسلما استفاده از اين تعداد سيم مقرون به صرفه نخواهد و باعث پيچيدگي مدار خواهد شد. جهت بر طرف کردن مشکل فوق مي‌توان پايه هاي يکسان در LED ها را به صورت سطري و ستوني به يکديگر متصل نمود. به تصوير زير دقت کنيد :


همانطور که در تصوير مشاهده نموديد، در اين آرايش آند تمامي LED هاي موجود در يک سطر يکسان به هم متصل شدند، همچنين کاتد LED هاي موجود در يک ستون نيز به هم اتصال داده شده‌اند.

حال ببينيم نحوه عملکرد اين روش چگونه است. شما در اين حالت جهت روشن کردن هر LED کافيست که سطري که آن LED در آنجا قرار دارد را به سطح ولتاز مثبت اتصال داده و سپس ستون مربوط به همان LED را به زمين مدار وصل کنيد.

با اين روش ما توانستيم از تعداد سيمهاي مورد نياز جهت کنترل LED ها بکاهيم ولي در مقابل امکان کنترل همزمان تمامي سطرها را از دست داديم و در هر لحظه فقط و فقط ميتوان LED هاي موجود در يک سطر و يا يک ستون را کنترل نمود.

نگران نباشيد، در ادامه همين بحث خواهيد ديد که جهت نمايش نيازي هم به تمامي LED ها نبوده و ميتوان توسط جاروب نمودن سطرها و يا ستون‌ها نيز به نمايش تصوير در تابلو روان پرداخت.

به هر حال در صورت عدم استفاده از روش فوق شما مدار پيچيده‌اي خواهيد داشت، مثلا براي کنترل LED ها موجود در تصوير روبرو شما حداقل بايد از طريق 41 سيم ماتريس را کنترل ميکرديد. در حالي که با استفاده از روش ماتريسي شما فقط به 13 سيم نياز داريد. فقط در اين حالت برنامه شما کمي پيچيده خواهد شد. که البته به نظر من شما يک بار برنامه مينويسيد از آن تا ابد استفاده ميکنيد ولي سخت افزار را بايد تا ابد مونتاژ کنيد و هزينه آن را پرداخت کنيد.

روش جاروب ساده به دو صورت بکار برده ميشود :

- جاروب سطرها

- جاروب ستون‌ها

در جاروب سطرها شما LED هاي موجود در سطر اول را روشن ميکنيد، سپس LED هاي سطر دوم و . . . تا به سطر آخر برسيم. دوباره همين کار را دوباره انجام ميدهيم.

در جاروب ستون‌ها شما LED هاي موجود در ستون اول را روشن ميکنيد، سپس LED هاي ستون دوم و . . . تا به ستون آخر برسيم. دوباره همين کار را دوباره انجام ميدهيم.

به يکبار جاروب کامل (خواه سطرها و خواه ستون‌ها) تازه سازي (Refresh) ميگويند.

جهت کمک به درک مطلب، به انيميشني از جاروب سطري که در زير آورده شده نگاه کنيد.



انيميشن فوق جهت ساخت تصوير زير است.



توجه داشته باشين که جاروب کردن علاوه بر کاهش سيم بندي و کم شدن پيچيدگي آن ميشود، باعث خواهد شد که شما در هر لحظه تعداد کمتري از LED هاي تابلو را روشن کنيد و در نتيجه ميزان مصرف جريان الکتريکي تابلو به ميزان قابل توجه‌اي کاهش پيدا خواهد نمود.

اثر نور در چشم انسان براي مدت کوتاهي باقي مي‌ماند. اين خاصيت را اثر پس ماند نور (Flicker) مي‌نامند. بر‌مبناي همين خاصيت است که در سينما و تلويزيون احساس پيوستگي تصوير بوجود مي‌آيد.

چنانچه تصاويري که از يک حرکت مثلا راه رفتن انسان عکس برداري شود و سپس با سرعت 16 بار در ثانيه به نمايش درآيد، چشم انسان منقطع بودن تصاوير را احساس نکرده و تصاوير را بطور پيوسته حس مي‌کند. بر مبناي اين خاصيت بود که صنعت سينما بوجود آمد.

ترتيب کار به اين صورت است که توسط يک دوربين فيلمبرداري مخصوص که قادر است در هر ثانيه 16 تصوير از يک صحنه عکس برداري نمايد، تصاوير تهيه شده سپس با همان سرعت به نمايش در مي‌آيند. البته به علت اينکه با 16 تصوير در ثانيه حرکات نرم و طبيعي نداريم، فرکانس مزبور بعدا به 24 تصوير در ثانيه افزايش داده شد. در اين فرکانس براي بيش از 90 درصد حرکات، پيوستگي طبيعي بوجود مي‌آيد. به همين علت به فرکانس مزبور حد پيوستگي گفته ميشود. مشکل ديگر مسئله چشمک زدن تصوير است.



در فرکانس 24 تصوير در ثانيه اگر چه مسئله پيوستگي تصاوير حل ميشود اما تصاوير چشمک مي‌زنند و اين بخاطر اين است که چشم اگرچه در اين فرکانس، تصاوير را پيوسته مي‌بيند و حرکات را طبيعي احساس ميکند اما خاموش شدن صحنه در حين تعويض يک تصوير به تصوير بعدي بوجود مي‌آيد را بصورت چشمک زدن تصوير احساس ميکند. اين پديده بخصوص براي تصاويري با نور بيشتر محسوس‌تر است.

براي رفع اين مشکل بايد حداقل 48 تصوير در ثانيه به نمايش درآيد تا اثر چشمک زدن از بين رود. در سينما چون نمايش 48 تصوير در ثانيه، اشکالات عملي بوجود مي‌آورد، مسئله را به طريق ديگري حل نموده‌اند. به اين ترتيب که سرعت حرکت نوار فيلم از مقابل لامپ پروژکتور همان 24 تصوير در ثانيه است منتهي به کمک يک ديافراگم گردان به هنگام تعويض يک فريم به فريم بعدي و همچنين در زمان نمايش فريم و درست در وسط زمان مزبور نور لامپ پروژکتور به فيلم قطع ميشود. با اينکار هر فريم دو بار روشن و خاموش ميشود.

با اين تدبير که هر تصوير دو بار روشن ميشود و سرعت حرکت نوار 24 تصوير در هر ثانيه است، از نظر چشم 48 تصوير در ثانيه احساس ميشود و مشکل چشمک زدن از بين ميرود. در تابلو هاي روان هم مسائل پيوستگي تصاوير و همچنين چشمک زدن، عوامل تعيين کننده سيستم جاروب و زمانهاي مربوطه هستند.

همانطور که گفته شد، جهت نمايش مناسب تصاوير متحرک بايد حداقل 24 تصوير در ثانيه نمايش داده شود. حال فرض کنيد شما يک تابلو با 32 سطر مي‌خواهيد طراحي کنيد و از جاروب سطري هم استفاده مي‌کنيد در اين حالت زمان نمايش هر فريم تصوير برابر با 41.6 ميلي ثانيه خواهد بود و در هر فريم 32 سطر جهت جاروب داريم پس زمان روشن بودن هر سطر برابر با 1.3 ميلي ثانيه خواهد بود.

خوب شما مدار را طراحي و ميسازيد اما در پايان متوجه ميشويد که نور LED ها بسيار کم تر از حالت معمولي است و حسابي متعجب خواهيد شد که چرا با وجود استفاده از LED هاي مرغوب نور تابلو روان تا اين حد کم است؟!

نکته اينجاست که شما هر LED را فقط به مدت 1.3 ميلي ثانيه روشن نگاه ميداريد و سپس به مدت 31 برابر اين مدت خاموش نگاه ميداريد( به خاطر جاروب 31 سطر بعدي ) يعني 1.3 ميلي ثانيه روشن و 40.3 ميلي ثانيه خاموش است. ودر واقع اثر نور LED در چشم به ميزان قابل توجه‌اي کاهش مي‌يابد.

جهت کم کردن اين اثر و افزايش نور تابلو روان چند کار را مي‌توان انجام داد :

1- افزايش ولتاژ اعمالي به LED ها که معمولا اين کار خطر سوختن LED ها در اثر هنگ کردن تابلو افزايش داده و همچنين از عمر مفيد آن نيز خواهد کاست.

2- تقسيم تابلو به سگمنت هاي جداگانه مثلا براي مثال فوق تقسيم تابلو به 4 سگمنت 8 سطري. اين روش مناسبي است ولي به پيچدگي نرم‌افزار و سخت‌افزار خواهد افزود و در تابلو هاي کوچک توصيه نمي‌شود.

3- جاروب يک در ميان، اين روش راه حل مناسبي در بر طرف نمودن مشکل فوق است. در عين حال که به پيچيدگي مدار منجر نخواهد شد و همچنين با تغيير ساده‌اي در الگوريتم برنامه ميتوان از آن بهره برد.

ترتيب کار به اين صورت است که ما هر فريم کامل را که در مثال فوق برابر با 32 سطر است به دو نيم فريم تقسيم ميکنيم. فريم اول شامل سطرهاي فرد (1،3،5،7،9،11،13،15،17،19،21،23،25،27،29،31) و فريم دوم شامل سطرهاي زوج (2،4،6،8،10،12،14،16،18،20،22،24،26،28،30،32) است. حال در هر جاروب فقط يکي از دو نيم فريم زوج ويا فرد را جاروب ميکنيم. بدين ترتيب که يکبار نيم فريم فرد و بار بعد نيم فريم زوج و دوباره نيم فريم فرد و ... در اين حالت چون در هر بار فقط 16 سطر جاروب ميشوند لذا زمان روشن بودن هر LED بيشتر خواهد شد. البته حتما شما خواننده تيز بين اين مقاله متوجه شديد که در اين حالت در ثانيه فقط ما 12 تصوير (فريم کامل) نمايش داده‌ايم پس احتمالا بخاطر اين کاهش مجددا مشکل لرزش تصوير را داشته باشيم!

البته شما کاملا حق داريد ولي نکته ظريفي هم اين بين وجود دارد و آن هم اين است که تعداد نيم فريم هاي نمايش داده شده در يک ثانيه همان 24 عدد است. در نتيجه لرزش تصوير منتفي خواهد بود.

جهت کمک به درک بهتر اين مطلب نحوه جاروب در يک تابلو روان 8 سري بصورت انيميشن در زير نمايش داده شده است.





انيميشن فوق با سرعت بالاتر :





متن مورد نمايش :







در مباحث قبل به اين نکته اشاره شد که براي نمايش هر تصوير ويا متني در تابلو روان ما نياز به اين داريم که ابتدا آنرا به نقاط تشکيل دهنده تقسيم کنيم. در مورد حروف نيز بدين شکل عمل ميکنيم و به ازاي هر حرف يک جدول درست ميکنيم، به مجموعه اين جداول که شامل تمامي حروف ميشود اصطلاحا جدول گلايف ميگويند. جهت روشن شدن مطلب به تصوير زير دقت نماييد.







همانطور که مشاهده ميکنيد در تصوير فوق من نمونه اي از جدول گلايف را براي حرف A و صورتک خندان ترسيم کردم و در ستون سمت چپ هر تصوير کد هگز(Hex) مربوط به هر سطر را درج کردم. که با فرض اين بوده که پهناي هر کاراکتر هشت پيکسل بوده و به ازاي هر پيکسل فعال بيت مرتبط با آن يک در نظر گرفته شده. در نتيجه در دو مثال فوق که ارتفاع هر کاراکتر 12 سطر است، براي ذخيره اطلاعات هر کاراکتر به 12 بايت نياز داريم. حال بسته به زبان برنامه نويسي که شما از آن استفاده ميکنيد نحوه ذخيره بازيابي اين جدول متفاوت خواهد بود. البته نرم‌افزارهايي نيز جهت طراحي فونت نيز در اين زمينه وجود دارد.

در اين جلسه نخستين مدار عملي تابلو روان را براي شما توضيح ميدهم. البته قبل از شروع اين بحث بايد عنوان کنم که من در طراحي اين مدارات سعي کردم که از حداقل قطعات ممکن استفاده کنم تا مدار از نظر سخت افزاري تا حد امکان ساده و ارزان باشد، در عين حال اينکه شما با ساخت هر يک از اين مدارات با نکات مهم در طراحي تابلو روان آشنا ميشويد. تا در پايان ساخت اين مدارات به يک طراح حرفه‌اي در زمينه ساخت تابلو روان تبديل خواهيد شد. از آنجايي که تمامي مطالب درج شده در اين مجموعه مقالات حاصل تجربيات شخصي من در اين زمينه هست، از شما دوستان عزيزي که مايل هستند از اين مقالات در سايت و يا وبلاگ خود استفاده نمايند، مي‌خواهم که حتما منبع را ذکر نمايند.

در جهت ارائه مناسب تر مطالب در کنار هر مدار من شماتيک آن مدار را که در نرم افزار Proteus طراحي نموده‌ام را که قابليت شبيه سازي را نيز دارا ميباشد، جهت دانلود در اختيار شما علاقمندان قرار دادم.



ليست قطعات مدار
- ميکروکنترلر ATmega8٭
- LED قرمز 35 عدد

- مقاومت 330 اهمي 5 عدد

- سوکت 28 پين جهت ميکرو ATmega8

- برد هزار سوراخ 15 در 10 سانتي متر

٭ قطعاتي که تعداد آنها مشخص نشده، مقدار آن يک عدد است.



بله تمامي قطعات مورد نياز جهت ساخت اين مدار همين چند قطعه ذکر شده در ليست فوق ميباشد. حال براي ساخت مدار بهتر است ابتدا ماتريس LED را بسازيد. نقشه اين ماتريس در تصوير زير آورده شده :







همانطور که مشاهده ميکنيد در تصوير فوق من تمامي کاتد هاي LED هاي موجود در يک سطر را به هم و آندهاي LED هاي موجود در يک ستون را به يکديگر متصل کرده‌ام. حتما بعد از ساخت ماتريس و قبل از ادامه مونتاژ ساير قطعات ماتريس LED را توسط اعمال يک ولتاژ بين 3 تا 9 ولت به سطرها و ستون ها تست کنيد تا از اتصال صحيح آن اطمينان حاصل کنيد.

حال نوبت به نصب سوکت 28 پين ميرسد، دليل استفاده از سوکت، جلوگيري از صدمه ديدن ميکرو کنترولر در حين لحيم کاري است و در عين حال به شما اجازه ميدهد که از ميکرو در پروژه هاي ديگر هم استفاده کنيد. بعد از نصب سوکت به سراغ مقاومت هاي 330 اهمي رفته و آنها را به پين هاي صفر تا پنج Portd وصل نماييد و سر ديگر مقاومت ها را به ستون هاي ماتريس LED متصل نماييد. به نقشه زير دقت کنيد.

جهت محاسبه مقدار مقاومت در مداراتي که داراي LED هستند ميتوانيد از نرم افزار آنلاين ماشين حساب LED استفاده کنيد. براي اين منظور اينجا کليک کنيد.







همانطور که در نقشه نيز مشاهده ميکنيد. مقاومت R1 به ستون 1 و مقاومت R2 به ستون 2 و ... مقاومت R5 به ستون 5 ماتريس LED متصل ميشود. حالا مدار شما کامل شده!!! و شما صاحب يک تابلو روان واقعي هستيد! و پس پروگرم کردن ميکرو ميتوانيد نتيجه کار خود را ببينيد و لذت ببريد. البته اين مدار جهت کار به ولتاژي بين 4.5 الي 5 ولت نيازمند است. در صورتي که از باطري کتابي و يا ساير منابع تغذيه که داراي ولتاژ بالاتر هستند و يا خروجي آنها تثبيت شده نيست استفاده ميکنيد. بهتر است تا از يک مدار رگولاتور ولتاژ استفاده نماييد. جهت ساخت مدار رگولاتور ولتاژ قطعات زير را تهيه نماييد.



ليست قطعات مدار
- آي سي رگولاتور ولتاژ 7805
- خازن 470 ميکروفاراد 16 ولت 2 عدد

٭ قطعاتي که تعداد آنها مشخص نشده، مقدار آن يک عدد است.









نقشه مدار رگولاتور ولتاژ را نيز در تصوير بالا مشاهده ميکنيد. من به شما توصيه ميکنم که ابتدا مدار را موتتاژ کنيد ولي خروجي آنرا به ميکرو متصل نکنيد. بلکه با اعمال يک ولتاژ بالاي 8 ولت به ورودي هاي آن از و تست ولتاژ خروجي(که بايستي در حدود 5 ولت باشد) از عملکرد صحيح آن اطمينان حاصل نموده و سپس آنرا به پايه هاي ميکرو کنترولر متصل نماييد. البته حتماً توجه داشته باشيد که چون نقشه اين مدار را توسط نرم افزار Proteus کشيده‌ام و اين نرم افزار جهت جلوگيري از شلوغي مدار بصورت پيش فرض تغذيه تمامي قطعات را وصل در نظر ميگيرد و آنها را در شماتيک نشان نمي‌دهد. لذا در نقشه فوق هم اتصال تغذيه ميکروکنترلر نشان داده نشده است. پس حتما پايه 7 ميکروکنترلر را به 5+ ولت و پايه 8 را به منفي متصل کنيد.

اگر تابحال تمامي مراحل فوق را بدرستي انجام داده باشيد اکنون مدار شما، مثل مدار من که در تصوير زير نشان داده‌ام در آمده است.







البته همانطور که متوجه شديد در تصوير بالا يک کانکتور مادگي در سمت راست ماتريس LED من نصب کردم. دليل وجود اين کانکتور برنامه ريزي مستقيم ميکرو کنترلر در حين کار مدار است. با اين کار من ديگر نيازي به جابجا کردن ميکروکنترلر و قرار دادن آن در پروگرمر نداشتم و مراحل تست برنامه را به سرعت انجام ميدهم.

حال نوبت به توضيح برنامه هست. من برنامه اين ميکرو را به زبان بيسيک نوشتم و از نرم افزار BASCOM-AVR استفاده کردم.



$regfile = "m8def.dat"
$crystal = 8000000

همانطور که ميدانيد، دستوراتي که با علامت "$" در BASCOM آغاز ميشوند، جزو دستورات کمپايلر به حساب مي‌آيند. و در زمان کمپايل کدي را توليد نميکنند. دو دستور فوق نيز همينگونه هستند. در دستور اول نوع ميکرو براي کمپايلر تعريف ميشود که در اينجا ATmega8 ميباشد و در دستور بعدي فرکانس کريستال بر حسب هرتز مشخص ميشود.در اين برنامه مقدار فرکانس تعريفي هشت مگاهرتز است. توجه داشته باشيد که من در مدار تابلو روان خود، از کريستال خارجي استفاده نکردم. لذا اين دستور تعيين کننده فرکانس اسيلاتور داخلي ميکروکنترلر ميباشد.



Config Portb = Output
Config Portd = Output

در دو دستور فوق پورت هاي B,D بعنوان خروجي پيکربندي گشته‌اند. من در اين مدار تابلو روان از پورت B براي راه اندازي و کنترل سطرها و از پورت D جهت راه‌اندازي ستون‌ها استفاده کرده‌ام.



Dim Row As Byte
Dim Scan As Byte



در اين دو دستور من دو متغيير از نوع بايت تعريف کردم. متغيير Row جهت شمارش سطرها و متغيير Scan جهت تهيه سيگنال جاروب در سطرها استفاده ميشود.



بعد از موارد فوق در برنامه، به حلقه اصلي برنامه ميرسيم. جهت ساخت اين حلقه از دستور Do-Loop استفاده شده و بدليل عدم ذکر هيچگونه شرطي در اين دستور، دستورات موجود در بدنه اين حلقه به تعداد بينهايت بار اجرا ميگردند.



Scan = &B11111110



در ابتداي حلقه Do-Loop متغيير Scan، مقدار دهي اوليه ميشود تا سيگنال مورد نياز جهت فعال نمودن سطر نخست توليد گردد. با توجه به ساختار ماتريس LED مورد استفاده در اين تابلو روان ( اتصال کاتد LED هاي موجود در يک سطر به يکديگر ) جهت فعال سازي يک سطر بايد پين مربوط به آن سطر در ميکرو صفر شود و ساير پين هاي مربوط به ديگر سطرها، يک شوند. همانطور نيز که مشاهده کرديد در دستور فوق نيز بيت نخست متغيير Scan نيز صفر شده که مربوط به سطر اول ماتريس است و ساير بيت‌ها نيز يک شده‌اند. در نتيجه فقط سطر اول فعال خواهد شد و ساير سطرها غير فعال هستند.



در ادامه برنامه به حلقه For-Next ميرسيم. متغيير Row در اين حلقه با صفر مقدار دهي اوليه ميشود و اجراي دستورات حلقه تا رسيدن اين متغيير به عدد 6 تعريف شده. لذا تعداد دفعات اجراي دستورات درون حلقه 7 بار خواهد بود. درواقع ما در درون اين حلقه يک بار کامل کل سطرهاي ماتريس را که هفت عدد ميباشد جاروب ميکنيم.



For Row = 0 To 6
Portb = Scan
Rotate Scan , Left
Portd = Lookup(row , Gelayof)
Waitus 20
Portd = 0
Next Row



در اولين دستور در حلقه For-Next مقدار متغيير Scan در پورت B ميکروکنترلر قرار ميگيرد. تا سطر مورد نظر در ماتريس فعال شود. در دستور بعدي متغيير Scan به اندازه يک بيت به سمت چپ شيفت چرخشي داده ميشود. با اين شيفت صفر موجود در اين متغيير به سمت چپ منتقل شده و جاي آنرا يک بيت يک پر ميکند. بعنوان مثال در نخستين بار اجراي اين دستور متغيير Scan از مقدار 11111110 به مقدار 11111101 تغيير ميکند و در شيفت بعدي به 11111011 تا اينکه بعد از هفتمين شيفت بصورت 10111111 در مي‌آيد. که در هفتمين مرحله در واقع بيت هفتم، صفر شده است که باعث فعال گشتن سطر هفتم ماتريس خواهد شد.

در اين برنامه من قصد نمايش حرف A را داشتم، لذا جدولي با نام Gelayof در برنامه تعريف کردم .همانطور نيز که در زير مشاهده ميکنيد، جهت ذخيره اطلاعات مربوط به حرف A من از هفت بايت استفاده نمودم و اطلاعات مربوط به هر سطر را در يک بايت قرار داده‌ام. از طرفي چون در اين مدار پهناي ماتريس LED، پنج است فقط از پنج بيت اول هر بايت استفاده شده و سه بيت با ارزش آن صفر شده‌اند. شما بنابر نياز خود ميتوانيد با تغيير دادن وضعيت بيتها به نمايش هر شکل و يا کاراکتري بپردازيد.



Gelayof:
Data &B00000100
Data &B00001010
Data &B00010001
Data &B00010001
Data &B00011111
Data &B00010001
Data &B00010001

حال اطلاعات اين جدول مرحله به مرحله و سطر به سطر خوانده شده و در پورت D قرار ميگيرد.اين عمل توسط دستور Lookup در برنامه صورت ميگيرد. در اين دستور بايت مورد نظر ( اطلاعات سطر مورد نظر ) توسط متغيير Row تعيين ميشود. بعد از قرار دادن اطلاعات مربوط هر سطر در پورت D به اندازه 20 ميکرو ثانيه اين اطلاعات در پورت نگاه داشته ميشود تا LED هاي موجود در آن سطر روشن بمانند و اثر آن در چشم بيننده باقي بماند. سپس پورت D صفر ميشود و اعمال فوق مجددا جهت سطر بعدي تکرار ميگردد.

بعد از هر بار جاروب کامل تمامي سطرها، کنترل برنامه از حلقه For-Next خارج شده و مجددا متغيير Scan مقدار دهي اوليه شده تا براي جاروب مجدد آماده گردد. بله به همين سادگي شما يک نمونه ساده از تابلو روان را ساختيد!



متن کامل برنامه را بصورت يکجا در زير آورده شده است.






'---------------------------------------------
'- This Program Writing By : Hossein Lachini -
'- This, Displyed "A" on the Signe Board -
'- For to get more details visit : -
'- www.HLachini.com -
'- Contact to me by : eLachini@Gmail.com -
'---------------------------------------------
$regfile = "m8def.dat"
$crystal = 8000000

Config Portb = Output
Config Portd = Output

Dim Row As Byte
Dim Scan As Byte


Do
Scan = &B11111110
For Row = 0 To 6
Portb = Scan
Rotate Scan , Left
Portd = Lookup(row , Gelayof)
Waitus 20
Portd = 0
Next Row
Loop
End 'end program

Gelayof:
Data &B00000100
Data &B00001010
Data &B00010001
Data &B00010001
Data &B00011111
Data &B00010001
Data &B00010001

 


 

منابع :
----------------------
www.tabloravan.net
----------------------

کلمات کليدي :
----------------------
تابلو روان ، آموزش تابلو روان ، ساعت مسجد
----------------------

نام ثبت کننده مقاله : مهندس بهروزی


نظرات شما عزیزان:

سلمان
ساعت12:18---9 شهريور 1390
لطفا در زمینه تابلو روان کتاب pdfبزارید

نام :
آدرس ایمیل:
وب سایت/بلاگ :
متن پیام:
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

 

 

 

عکس شما

آپلود عکس دلخواه:








تاریخ: سه شنبه 13 ارديبهشت 1390برچسب:,
ارسال توسط امیر عیوضی